/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package eu.fsiebert.polytech.db.mediatheque.session;

import eu.fsiebert.polytech.db.mediatheque.entity.Livre;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Florent
 */
@Stateless
public class LivreFacade extends AbstractFacade<Livre> {


    @PersistenceContext(unitName = "mediatheque")
    private EntityManager em;

    protected EntityManager getEntityManager() {
        return em;
    }

    public LivreFacade() {
        super(Livre.class);
    }

    @Override
    public void create(Livre entity) {
        em.persist(entity.getItem());
        em.flush();
        entity.setItemRef(entity.getItem().getItemRef());
        em.persist(entity);
    }
    
    public List<Livre> getNouveautes() {
        Query query = em.createNamedQuery("Livre.findAllDateOrdered");
        query.setMaxResults(20);
        return (List<Livre>) query.getResultList();
    }

    public List<Livre> getLivres(String titre, String auteur, String genre, String motscles) {
        Query query = em.createNamedQuery("Livre.findGeneric");
        query.setParameter("titre", "%" + titre + "%");
        query.setParameter("auteur", "%" + auteur + "%");
        query.setParameter("genre", "%" + genre + "%");
        //query.setParameter("keywords", "(" + genre.replace(' ', ',') + ")");
        //query.setParameter("keywords", new ArrayList<String>());
        //query.setParameter("keywords", new ArrayList<String>(Arrays.asList(motscles.split(" "))));
        return (List<Livre>) query.getResultList();
    }
    
}
